package ru.sviridov.sellandbuy.tasks.recipients;

import ru.sviridov.sellandbuy.ChooseAddressActivity;
import ru.sviridov.sellandbuy.model.Response;
import ru.sviridov.sellandbuy.tasks.base.TaskRecipient;
import android.content.Context;
import android.widget.Toast;
import api.istsoft.ru.dal.Geo.City;
import api.istsoft.ru.dal.Geo.Country;
import api.istsoft.ru.dal.Geo.State;

public class RegionsRecipient implements TaskRecipient{
	public static final int COUNTRY = 1;
	public static final int STATE = 2;
	public static final int CITY = 4 ;
	
	private int regionType;
	
	public RegionsRecipient(int regionType) {
		this.regionType = regionType;
	}

	public void setRegionType(int regionType){
		this.regionType = regionType;
	}

	@Override
	public void onURLError(Context context, int errorCode) {
		if(context!=null)
			Toast.makeText(context, "Can't reach server. Error Code:"+errorCode, Toast.LENGTH_SHORT).show();
	}

	@Override
	public void onJSONError(Context context, Response response) {
		if(context!=null)
			Toast.makeText(context, response.getErrorMessage(), Toast.LENGTH_SHORT).show();
	}

	@Override
	public void onSuccess(Context context, Response response) {
		if(context==null) return;
		Object[] results = response.getResults();
		ChooseAddressActivity activity = (ChooseAddressActivity)context;
		switch (regionType) {
		case COUNTRY:
			Toast.makeText(context, "Countries loaded", Toast.LENGTH_SHORT).show();
			Country[] countries = new Country[results.length];
			castToType(results, countries);
			
			activity.setCountries(countries);
			break;
		case STATE:
			Toast.makeText(context, "States loaded", Toast.LENGTH_SHORT).show();
			State[] states = new State[results.length];
			castToType(results, states); 
			
			activity.setStates(states);			
			break;
		case CITY:
			Toast.makeText(context, "Cities loaded", Toast.LENGTH_SHORT).show();
			City[] cities = new City[results.length];
			castToType(results, cities); 
			
			activity.setCities(cities);						
		}
		
	}
	
	@SuppressWarnings("unchecked")
	private <T> void castToType(Object[] results, T[] objs){
		for(int i=0;i<results.length;i++)
			objs[i] =(T) results[i]; 
	}

}

//id nazvanie
//1 Федеральный округ
//2 Республика
//3 Область
//4 Край
//5 Автономная область
//6 Автономный округ
//7 Район
//8 Сельское поселение
//9 Городское поселение
//10 Штат
//11 Зависимая территория (заморская территория, колония и т.п.)
//12 Воеводство
//13 Гмина
//14 Федеральная земля
//15 Провинция
//16 Вилайет
//17 Паррокия
//18 Округ
//19 Город федерального значения (подчинения)
//20 Префектура
//21 Мааконд
//22 Лен
//23 Кантон
//24 Муниципалитет
//25 Община
//26 Регион
//27 Губерния
//28 Кастелли
//29 Жудец
//30 Уезд
//31 Графство
//32 Приход
//33 Департамент
//34 Губернаторство
//35 Султанат
//36 Эмират

//id nazvanie kratko opisanie ves
//1 город г.  1
//2 посёлок городского типа пгт.  2
//3 станица стан.  3
//4 посёлок пос.  4
//5 кишлак кишл.  4
//6 село с.  5
//7 деревня д.  5
//8 местечко мест.  5
//9 хутор хут.  6
//10 ферма ферм.  6
//11 усадьба ус.  6
